IronOCR 操作指南 閱讀護照 使用 IronOCR 在 C# 中提取護照資料。 Curtis Chau 更新:2026年1月10日 下載 IronOCR NuGet 下載 DLL 下載 Windows 安裝程式 開始免費試用 法學碩士副本 法學碩士副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 This article was translated from English: Does it need improvement? Translated View the article in English IronOCR 的 ReadPassport 方法只需一行 C# 程式碼即可從護照影像中擷取結構化資料,包括姓名、護照號碼、出生日期和有效日期,非常適合移民和安全應用程式。 在機場的登機櫃檯和安全入境等應用程式和系統中,代理人員每天都要處理大量護照,因此擁有一個能夠準確擷取旅客關鍵資訊的可靠系統,對於確保有效率且簡化的入境程序至關重要。 IronOCR 庫提供先進的 OCR 功能,專門針對護照讀取進行了優化,其底層採用Tesseract 5 ,並結合了機器學習增強技術。 快速入門:一行提取護照 MRZ 資訊 本範例展示如何使用 OcrInput 載入護照影像,使用 ReadPassport() 擷取資料,並從回傳的 PassportInfo 中存取結構化欄位,例如姓名、號碼和日期。 不需要複雜的設定 - 只需要簡單直接的一行。與傳統的 Tesseract 實作不同,IronOCR 提供了專門用於文件擷取的簡化 API。 立即開始使用 NuGet 建立 PDF 檔案: 使用 NuGet 套件管理器安裝 IronOCR PM > Install-Package IronOcr 複製並運行這段程式碼。 var passportInfo = new IronOcr.IronTesseract().ReadPassport(new IronOcr.OcrInput("passport.jpg")).PassportInfo; 部署到您的生產環境進行測試 立即開始在您的專案中使用 IronOCR,免費試用! 免費試用30天 ### 最小工作流程(5 個步驟) 下載一個用於讀取護照的 C# 庫。 導入護照圖像以供讀取 確保文件僅包含護照圖像,無標題或頁腳 使用ReadPassport方法從映像中提取數據 存取OcrPassportResult屬性以查看和進一步操作提取的護照數據 如何在 C# 中提取護照資料? 例如,我們將使用護照影像作為輸入來展示 IronOCR 的功能。 使用OcrInput載入影像後,您可以利用ReadPassport方法識別和提取護照資訊。 此方法傳回一個OcrPassportResult對象,其中包含GivenNames 、 Country 、 PassportNumber 、 Surname 、 DateOfBirth和DateOfExpiry等屬性。 PassportInfo物件的所有成員均為字串。 ReadPassport 方法是 IronOCR 專門的文件讀取功能的一部分,該功能還包括用於讀取車牌、MICR 支票和其他結構化文件的方法。 此方法使用先進的 電腦視覺技術來自動定位並擷取 MRZ (Machine Readable Zone) 區域。 請注意@ 此方法目前僅適用於英文版護照。 在 .NET Framework 上使用進階掃描功能需要專案在 x64 架構上運作。 Mac 使用者請注意, ReadPassport方法目前不會自動旋轉輸入內容。 使用輸入時,請確保 MRZ 始終位於文件底部;否則,處理將失敗。 我應該使用何種護照影像格式? IronOCR 支援各種 影像格式,包括 JPG、PNG、TIFF 和 BMP。為了達到最佳效果,請確保您的護照影像有足夠的解析度 (至少 300 DPI) 和適當的光線。 DPI設定可在使用較低品質掃描時進行調整。 擷取護照資料需要哪些程式碼? 以下範例展示了擷取護照資料的完整過程。 對於處理多本護照的應用程式,請考慮實施 多執行緒支援 以提高效能。 您也可以追蹤OCR 的進度,以進行長時間的作業。 :path=/static-assets/ocr/content-code-examples/how-to/read-passport-read-passport.cs using IronOcr; using System; // Instantiate OCR engine var ocr = new IronTesseract(); using var inputPassport = new OcrInput(); inputPassport.LoadImage("passport.jpg"); // Perform OCR OcrPassportResult result = ocr.ReadPassport(inputPassport); // Output passport information Console.WriteLine(result.PassportInfo.GivenNames); Console.WriteLine(result.PassportInfo.Country); Console.WriteLine(result.PassportInfo.PassportNumber); Console.WriteLine(result.PassportInfo.Surname); Console.WriteLine(result.PassportInfo.DateOfBirth); Console.WriteLine(result.PassportInfo.DateOfExpiry); Imports IronOcr Imports System ' Instantiate OCR engine Private ocr = New IronTesseract() Private inputPassport = New OcrInput() inputPassport.LoadImage("passport.jpg") ' Perform OCR Dim result As OcrPassportResult = ocr.ReadPassport(inputPassport) ' Output passport information Console.WriteLine(result.PassportInfo.GivenNames) Console.WriteLine(result.PassportInfo.Country) Console.WriteLine(result.PassportInfo.PassportNumber) Console.WriteLine(result.PassportInfo.Surname) Console.WriteLine(result.PassportInfo.DateOfBirth) Console.WriteLine(result.PassportInfo.DateOfExpiry) $vbLabelText $csharpLabel 我可以期待 ReadPassport 帶來哪些輸出? 擷取的資料會以結構化的格式傳回,方便與現有系統整合。 OcrResult 類別提供對所有萃取資訊的全面存取。 然後我們訪問從OcrPassportResult物件取得的PassportInfo資料成員。 擷取過程會自動處理各種護照版面與格式,在不同簽發國家提供一致的結果。 GivenNames : PassportInfo的屬性,以字串形式傳回護照輸入的姓名。 這對應於 MRZ 資料的第一行,位置 4 到 44。 Country : PassportInfo的一個屬性,以字串形式傳回護照輸入的國家。 這對應到 MRZ 資料的第一行,位置 2 到 3。 傳回的字串拼出簽發國家的全名,而不是縮寫。 在我們的範例中,USA 返回"美利堅合眾國"。 PassportNumber : PassportInfo的屬性,以字串形式傳回護照輸入的護照號碼。 這相對應於第二個 MRZ 資料列,位置 1 到 9。 Surname : PassportInfo的屬性,以字串形式傳回護照輸入的姓氏。 這對應於 MRZ 資料的第一行,位置 4 到 44。 DateOfBirth : PassportInfo的屬性,以 YYYY-MM-DD 格式的字串傳回護照輸入的出生日期。 這相對應於第二個 MRZ 資料列,位置 14 到 19。 DateOfExpiry : PassportInfo的一個屬性成員,以 YYYY-MM-DD 格式傳回護照輸入的到期日期字串。 這相對應於第二個 MRZ 資料列,位置 22 到 27。 我可以從護照中擷取哪些 MRZ 資訊? IronOCR 可讀取任何遵循(國際民用航空組織)ICAO標準的護照底部兩行所包含的 MRZ 資訊。 MRZ 資料由兩行資料組成,每組位置都包含獨特的資訊。 以下是一個簡表,顯示哪些資訊與該行的索引相對應。 IronOCR 中的 MRZ 解析功能旨在處理印刷品質和 影像方向的變化。 對於具挑戰性的文件,您可以套用 影像修正篩選器來提高辨識準確度。 MRZ 部分是什麼樣子? MRZ 通常位於護照頁面的底部,由兩行標準文字組成。 瞭解 MRZ 結構有助於排除萃取問題和驗證結果。 第一排 位置 領域 描述 1文件類型通常"P"代表護照。 2-3簽發國三字母國家代碼(ISO 3166-1 alpha-3) 4-44姓氏和名字姓氏後面跟著"<<",名字後面跟著"<"分隔。 第二排 位置 領域 描述 1-9護照號碼唯一護照號碼 10校驗位(護照號碼)護照號碼校驗位 11-13國籍三字母國籍代碼(ISO 3166-1 alpha-3) 14-19出生日期出生日期(YYMMDD格式) 20校驗位(出生日期)出生日期校驗位 21性別性別('M' 代表男性,'F' 代表女性,'X' 代表未指定) 22-27到期日期到期日(YYMMDD 格式) 28校驗位(到期日)有效期校驗位 29-42個人號碼可選的個人號碼(通常為國民身分證號碼) 43校驗位(個人號碼)個人號碼的校驗位 44校驗位(複合)整體校驗位 如何調試和驗證護照擷取結果? 我們也可以從 IronOCR 中驗證結果,從護照影像中取得原始抽取的文字以及置信度,確認抽取的資訊是否正確。 以上述範例為例,我們可以存取OcrPassportResult物件的Confidence和Text屬性。 為了除錯的目的,您可能想要高亮顯示文字區域來直觀地驗證哪些區域被辨識出來。 此功能在排除抽取問題或最佳化掃描區域時尤其有用。 :path=/static-assets/ocr/content-code-examples/how-to/read-passport-debug.cs using IronOcr; using System; // Instantiate OCR engine var ocr = new IronTesseract(); using var inputPassport = new OcrInput(); inputPassport.LoadImage("passport.jpg"); // Perform OCR OcrPassportResult result = ocr.ReadPassport(inputPassport); // Output Confidence level and raw extracted text Console.WriteLine(result.Confidence); Console.WriteLine(result.Text); Imports IronOcr Imports System ' Instantiate OCR engine Private ocr = New IronTesseract() Private inputPassport = New OcrInput() inputPassport.LoadImage("passport.jpg") ' Perform OCR Dim result As OcrPassportResult = ocr.ReadPassport(inputPassport) ' Output Confidence level and raw extracted text Console.WriteLine(result.Confidence) Console.WriteLine(result.Text) $vbLabelText $csharpLabel 。 Confidence : OcrPassportResult的Confidence屬性是一個浮點數,表示 OCR 統計準確度置信度,即每個字元的平均值。 如果護照影像模糊或包含其他資訊,則此浮動值較低。 1 代表最高和最有信心,0 代表最低和最沒信心。 對於生產應用程式,請考慮實施 結果置信度臨界值,以確保資料品質。 Text : OcrPassportResult的Text屬性包含從護照影像中提取的原始、未解析的文字。 開發人員可在單元測試中使用,以驗證擷取的護照影像文字。 針對進階方案,您可以 hOCR 格式匯出結果,以便進一步分析。 護照掃描應用程式的最佳實務 在生產環境中實施護照掃描時,請考慮這些額外因素: 1.影像品質:確保輸入的影像符合最低品質標準。 Filter Wizard 可協助最佳化影像,以獲得更好的辨識度。 2.效能:若要進行大量處理,請執行 async 支援,並考慮批次處理多本護照。 3.安全性: 由於護照資料相當敏感,因此必須確保資料處理得宜,並考慮與安全的文件管理系統整合。 4.驗證:針對擷取的 MRZ 資料執行校驗位元驗證,以確保準確性。 MRZ 格式包含多個校驗碼,可用於驗證擷取資訊的完整性。 5.錯誤處理:針對護照影像可能受損、光線不足或包含非標準格式的情況,實施健全的錯誤處理。 常見問題解答 如何使用 C# 從影像中萃取護照資料? 您可以使用 IronOCR 的 ReadPassport 方法提取護照資料。只需使用 OcrInput 載入您的護照影像,並呼叫 ReadPassport() 即可在一行程式碼中取得結構化資料,包括姓名、護照號碼、出生日期和有效日期。 哪些護照資訊可以自動擷取? IronOCR 的 ReadPassport 方法可從護照影像中抽取 GivenNames、Country、PassportNumber、Surname、DateOfBirth 和 DateOfExpiry。所有資料都會以字串的形式傳回結構化的 PassportInfo 物件中。 我需要複雜的設定才能讀取 passport MRZ 資料嗎? 不需要複雜的設定。IronOCR 提供簡化的 API,只需一行程式碼即可擷取通行證 MRZ 資料,不像傳統的 Tesseract 實作需要更多的設定。 護照閱讀能力由哪些技術提供? IronOCR 在引擎蓋下利用 Tesseract 5,搭配機器學習增強功能和先進的電腦視覺技術,可自動定位並擷取護照影像中的 MRZ(機器可讀區)區域。 這可以用於機場出入境系統嗎? 是的,IronOCR 是機場移民和安全應用的理想選擇,在機場,代理每天都要處理大量的護照。它提供可靠的關鍵任務旅客資訊擷取,以確保有效率的移民流程。 Curtis Chau 立即與工程團隊聊天 技術撰稿人 Curtis Chau 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。 審核人 Jeffrey T. Fritz 首席計畫經理 - .NET 社群團隊 Jeff 也是 .NET 和 Visual Studio 團隊的首席計畫經理。他是 .NET Conf 虛擬會議系列的執行製作人,並主持「Fritz and Friends」開發人直播串流,每週播出兩次,與觀眾一起討論技術和編寫程式碼。Jeff 為 Microsoft Build、Microsoft Ignite、.NET Conf 和 Microsoft MVP Summit 等大型 Microsoft 開發人員活動撰寫工作坊、簡報和規劃內容。 準備好開始了嗎? Nuget 下載 5,384,824 | 版本: 2026.2 剛剛發布 免費 NuGet 下載 總下載量:5,384,824 查看許可證